﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Administrador_Relatorio_Venda_Default : System.Web.UI.Page {

    PetShopService.Relatorio relatorio = new PetShopService.Relatorio();
    PetShopService.UsuarioServicos oUsuarioServicos = new PetShopService.UsuarioServicos();
    PetShopService.ItensDesejadosServico itensDesejadosServicos = new PetShopService.ItensDesejadosServico();

    protected void Page_Load(object sender, EventArgs e) {

        if (!oUsuarioServicos.isUsuarioAdministrador())
            Response.Redirect("~/default.aspx");

    }

    protected void btnPesquisar_Click(object sender, EventArgs e){
    
        DateTime dtInicial = Convert.ToDateTime(TxtDataInicial.Text);
        DateTime dtFinal   = Convert.ToDateTime(TxtDataFinal.Text);

        List<PetShopService.Pedido> pedidos =  relatorio.RetornaPedidos(dtInicial, dtFinal);
        List<PetShopService.ItensPedidos> listaItensPedidos = new List<PetShopService.ItensPedidos>();

        PetShopService.ItensPedidos produtoMaisVendido = new PetShopService.ItensPedidos();
        PetShopService.ItensPedidos produtoMenosVendido = new PetShopService.ItensPedidos();
        
        produtoMenosVendido.Quantidade = 1;

        GVPedidos.DataSource = pedidos;
        GVPedidos.DataBind();

        decimal somaVendas = 0;

        foreach(PetShopService.Pedido pedido in pedidos){

            foreach(PetShopService.ItensPedidos itemPedido in pedido.ItensPedidos){
                
                if (itemPedido.Quantidade > produtoMaisVendido.Quantidade)
                    produtoMaisVendido = itemPedido;

                if (itemPedido.Quantidade <= produtoMenosVendido.Quantidade)
                    produtoMenosVendido = itemPedido;

                //Carrega dados para o gráfico
                if(listaItensPedidos.Where(p => p.idProduto == itemPedido.idProduto).Count() == 0)
                    listaItensPedidos.Add(itemPedido);
                else{
                    PetShopService.ItensPedidos oItemExistente = listaItensPedidos.SingleOrDefault(p => p.idProduto == itemPedido.idProduto && p.idPedido == itemPedido.idPedido);
                    if (oItemExistente != null){
                        oItemExistente.Quantidade += itemPedido.Quantidade;
                        listaItensPedidos.Remove(itemPedido);
                        listaItensPedidos.Add(itemPedido);
                    }
                }
                somaVendas += itemPedido.Preco * itemPedido.Quantidade;
            }
        }

        GraficoProdutosVendidos.DataSource = listaItensPedidos.ToList();
        GraficoProdutosVendidos.DataBind();

        gvItensGrafico.DataSource = listaItensPedidos.ToList();
        gvItensGrafico.DataBind();

        lblVentaTotal.Text ="Total das vendas nesse período <b>"+ somaVendas.ToString()+"</b>";
        lblMaisVendido.Text = " Produto mais vendido foi " + produtoMaisVendido.Produto.Nome;
        lblMenosVendido.Text = " Produto menos vendido foi " + produtoMenosVendido.Produto.Nome;
    }
}